﻿using System;
using System.Collections.Generic;

namespace Model.Refeicoes
{
    public interface IRefeicaoRepository
    {
        Refeicao ObterPorRefeicaoContratadaData(Int64 idRefeicaoContratada, DateTime dataRefeicao);
        IList<Refeicao> ObterPorUnidadeData(Int64 idUnidade, DateTime dataRefeicao);
        IList<Refeicao> ObterRefeicaoPorContratoDataRefeicao(Int64 numeroContrato, DateTime dataRefeicao);
        IList<Refeicao> ObterTodasContratadasPorUnidadeData(Int64 idUnidade, DateTime dataRefeicao);
        IList<Refeicao> ObterTodos();
        IList<Refeicao> ObterRefeicaoPorEstado(String estado);

        Refeicao Actualiza(Refeicao item);
        Refeicao Insere(Refeicao item);
        IList<Refeicao> Actualiza(IList<Refeicao> items);
        IList<Refeicao> Insere(IList<Refeicao> items);
        void Apaga(Refeicao item);

        RefeicaoOpcao ObterRefeicaoOpcaoPorChaveRefeicaoOpcao(Int64 idRefeicaoContratada, DateTime dataRefeicao, String codOpcao);
        IList<RefeicaoOpcao> ObterTodosRefeicaoOpcaoPorRefeicao(Int64 idRefeicaoContratada, DateTime dataRefeicao);
        IList<RefeicaoOpcao> ObterTodosRefeicaoOpcaoPorRefeicao(Refeicao refeicao);
        RefeicaoOpcao Actualiza(RefeicaoOpcao item);
        IList<RefeicaoOpcao> Actualiza(IList<RefeicaoOpcao> item);
        RefeicaoOpcao Insere(RefeicaoOpcao item);
        void Apaga(RefeicaoOpcao item);

        RefeicaoUnidade ObterRefeicaoUnidadePorChaveRefeicaoUnidade(Int64 idRefeicaoContratada, DateTime dataRefeicao, Int64 idUnidade);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadePorRefeicao(Int64 idRefeicaoContratada, DateTime dataRefeicao);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadeContratadasPorRefeicao(Int64 idRefeicaoContratada, DateTime dataRefeicao);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadeContratadasPorDataRefeicao(Int64 numeroContrato, DateTime dataRefeicao);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadePorUnidadeDataRefeicao(Int64 idunidade, DateTime dataRefeicao);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadeContratadasPorRefeicao(Refeicao refeicao);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadePorRefeicao(Refeicao refeicao);
        IList<RefeicaoUnidade> ObterTodosRefeicaoUnidadeAguradaNumRefeicoesServidas();
        RefeicaoUnidade Actualiza(RefeicaoUnidade item);
        IList<RefeicaoUnidade> Actualiza(IList<RefeicaoUnidade> items);
        RefeicaoUnidade Insere(RefeicaoUnidade item);
        void Apaga(RefeicaoUnidade item);
    }
}
